1. Field of the Invention
The invention relates generally to graphical user interfaces (GUIs). More particularly, the invention relates to a mechanism for enforcing prerequisites in the context of GUI navigation.
2. Description of the Related Art
In the context of web page navigation, there may be various requirements that must be met before a particular page or content is accessible by a user. For example, a website may require that the user read and accept some disclosure, fill out a registration questionnaire, or login before certain content, such as real-time stock quotes, or pages, such as a securities trading page, or an account overview page, are made available to the user. Once all the requirements are met, e.g., the disclosure has been presented and acknowledged by the user, the protected content or pages, e.g., the securities trading page, may be displayed any time it is requested by the user. In this example, the displaying of the disclosure page thus becomes a “prerequisite” to displaying the securities trading page.
Of course, there might be a series of prerequisite pages that must be shown to the user; and some may require data entry by the user before their requirements are met. For example, login pages typically require both a user ID and a password to be entered. After the user is authenticated, a required disclosure page may be displayed to the user before the desired destination page is presented. The disclosure page may have an “I ACCEPT” button, which when selected, takes the user to the desired destination page. Prerequisite tracking is a simple issue when there is a one-to-one relationship between disclosure pages and the desired destination pages. However, it should be apparent that the complexity of prerequisite tracking increases rapidly as the number of destination pages requiring a particular disclosure page increases and as the number of inter-page dependencies to be enforced increases.
One potential solution to this prerequisite tracking problem is to have logic associated with the destination page, e.g., the securities trading page, perform the check whether the appropriate disclosure page has been displayed or not and if not to execute the appropriate code to cause its display. After the appropriate disclosure page has been displayed, subsequent requests for the securities trading page will not cause the disclosure page to be shown to the user since it has already been displayed. However, there are many disadvantages of this solution. First, every destination page becomes tightly coupled to its disclosure page(s). Second, changing the prerequisites or adding new prerequisites requires coding changes. Third, the reusability of pages is adversely affected since the destination page cannot be used in other contexts. Finally, if other pages require the same prerequisites, the same code needs to be copied to all such page objects. While the examples above have focused on pages as a whole, similar difficulties relating to prerequisite tracking exist in the context of web page sub-component interdependencies.
Thus, what is needed is a mechanism by which a web publisher may specify components and/or sub-components that are prerequisites to other components and/or sub-components. Also needed is framework for implementing a methodology by which prerequisite components and sub-components may ensure that their requirements have been met before they are displayed.